In comparison with uniprocessor computer systems, multiprocessor computer systems are typically complex in design, in terms of both hardware and software For example, multiprocessor systems typically require special and complex inter-processor communication mechanisms and protocols, special arrangements for access by a plurality of processors to shared input and output resources, and memory and other resource locking arrangements to avoid race conditions and simultaneous-access conflicts between processors.
Many of these complexities may be avoided by means of a master-slave multiprocessor configuration, wherein one or more slave processors perform only user-instruction processing and transfer processes for operating system service processing to a master processor. With respect to I/O devices and other periphery, such a system appears as, and hence may be interacted with as, a uniprocessor consisting of the master processor. Many operating system complexities involving shared-resource locking, race condition avoidance, and other interprocessor cooperation matters are avoided thereby.
Nevertheless, many complexities still remain in such a multiprocessor design, especially in the operating system software, because of the need for the plurality of processors to communicate and transfer control from one to another. Consequently, it is a problem in the art that a uniprocessor is typically not "growable" into a multiprocessor, and that a uniprocessor may be converted into a multiprocessor only through extensive operating system redesign, and that changes required to be made to convert a uniprocessor system design into a multiprocessor system design are not transparent to application programs.